🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / wifi-provision / src / commonMain / kotlin / org / meshtastic / feature / wifiprovision / domain / NymeaProtocol.kt
Displaying Raw • Download
feature/wifi-provision/src/commonMain/kotlin/org/meshtastic/feature/wifiprovision/domain/NymeaProtocol.kt renovate/actions-setup-java-5.x (f17e586c) Text, 4.52 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.wifiprovision.domain
Tff7b72import T7ee787kotlinx.serialization.ExperimentalSerializationApi
Tff7b72import T7ee787kotlinx.serialization.SerialName
Tff7b72import T7ee787kotlinx.serialization.Serializable
Tff7b72import T7ee787kotlinx.serialization.json.Json
T8b949e/**
* kotlinx.serialization models for the nymea-networkmanager JSON-over-BLE protocol.
*
* All messages are compact JSON objects terminated with a newline (`\n`) and chunked into ≤20-byte BLE
* notification/write packets.
*
* Reference: https://github.com/nymea/nymea-networkmanager#bluetooth-gatt-profile
*/
T8b949e// ---------------------------------------------------------------------------
T8b949e// Shared JSON codec — lenient so unknown fields are silently ignored
T8b949e// ---------------------------------------------------------------------------
Tf0883e@OptInTb4b4b4(Te6edf3ExperimentalSerializationApiTff7b72::Te6edf3classTb4b4b4)
Tff7b72internal Tff7b72val Te6edf3NymeaJson Tff7b72= Te6edf3Json Tb4b4b4{
Te6edf3ignoreUnknownKeys Tff7b72= Tff7b72true
Te6edf3isLenient Tff7b72= Tff7b72true
Te6edf3exceptionsWithDebugInfo Tff7b72= Tff7b72false
Tb4b4b4}
T8b949e// ---------------------------------------------------------------------------
T8b949e// Commands (app → device)
T8b949e// ---------------------------------------------------------------------------
T8b949e/** A command with no parameters (e.g. GetNetworks, TriggerScan). */
Tf0883e@Serializable Tff7b72internal Tff7b72data Tff7b72class T56d364NymeaSimpleCommandTb4b4b4(Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3commandTb4b4b4: Tffa657IntTb4b4b4)
T8b949e/** The parameter payload for the Connect / ConnectHidden commands. */
Tf0883e@Serializable
Tff7b72internal Tff7b72data Tff7b72class T56d364NymeaConnectParamsTb4b4b4(
T8b949e/** SSID (nymea key: `e`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffeTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3ssidTb4b4b4: Tffa657StringTb4b4b4,
T8b949e/** Password (nymea key: `p`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3passwordTb4b4b4: Tffa657StringTb4b4b4,
Tb4b4b4)
T8b949e/** A command that carries a [NymeaConnectParams] payload. */
Tf0883e@Serializable
Tff7b72internal Tff7b72data Tff7b72class T56d364NymeaConnectCommandTb4b4b4(
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3commandTb4b4b4: Tffa657IntTb4b4b4,
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3paramsTb4b4b4: Te6edf3NymeaConnectParamsTb4b4b4,
Tb4b4b4)
T8b949e// ---------------------------------------------------------------------------
T8b949e// Responses (device → app)
T8b949e// ---------------------------------------------------------------------------
T8b949e/** Generic response — present in every reply from the device. */
Tf0883e@Serializable
Tff7b72internal Tff7b72data Tff7b72class T56d364NymeaResponseTb4b4b4(
T8b949e/** Echo of the command code. */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3commandTb4b4b4: Tffa657Int Tff7b72= Tff7b72-T79c0ff1Tb4b4b4,
T8b949e/** 0 = success; non-zero = error code. */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffrTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3responseCodeTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
T8b949e/** Optional payload (used by GetConnection and custom Connect responses). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3connectionInfoTb4b4b4: Te6edf3NymeaConnectionInfo? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4)
T8b949e/** One entry in the GetNetworks (`c=0`) response payload. */
Tf0883e@Serializable
Tff7b72internal Tff7b72data Tff7b72class T56d364NymeaNetworkEntryTb4b4b4(
T8b949e/** SSID (nymea key: `e`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffeTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3ssidTb4b4b4: Tffa657StringTb4b4b4,
T8b949e/** BSSID / MAC address (nymea key: `m`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3bssidTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4,
T8b949e/** Signal strength in dBm (nymea key: `s`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffsTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3signalStrengthTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
T8b949e/** 0 = open, 1 = protected (nymea key: `p`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3protectionTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tb4b4b4)
T8b949e/** Full GetNetworks response including the network list. */
Tf0883e@Serializable
Tff7b72internal Tff7b72data Tff7b72class T56d364NymeaNetworksResponseTb4b4b4(
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3commandTb4b4b4: Tffa657Int Tff7b72= Tff7b72-T79c0ff1Tb4b4b4,
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffrTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3responseCodeTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3networksTb4b4b4: Te6edf3ListTff7b72<Te6edf3NymeaNetworkEntryTff7b72> Tff7b72= Te6edf3emptyListTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
T8b949e/** Connection info payload (`p`) returned by GetConnection (`c=5`). */
Tf0883e@Serializable
Tff7b72internal Tff7b72data Tff7b72class T56d364NymeaConnectionInfoTb4b4b4(
T8b949e/** ESSID / network name (nymea key: `e`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffeTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3ssidTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4,
T8b949e/** BSSID / MAC address (nymea key: `m`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffmTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3bssidTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4,
T8b949e/** Signal strength in dBm (nymea key: `s`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffsTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3signalStrengthTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
T8b949e/** 0 = open, 1 = protected (nymea key: `p`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3protectionTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
T8b949e/** IPv4 address of current connection (nymea key: `i`). */
Tf0883e@SerialNameTb4b4b4(Ta5d6ff"Ta5d6ffiTa5d6ff"Tb4b4b4) Tff7b72val Te6edf3ipAddressTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Served by rngit 1.5.0 - Generated in 0.05s